// hooks
// loding效果
// 获取笔记类型
import { onMounted, ref } from 'vue'
import { getAllNoteType } from '@/services/upload.js'

export function positionFn() {
  // 定义数据对象
  // 级联组件所需数据
  let noteType = ref([])
  // 树形层级编译器
  function transListToTreeData(list, rootValue) {
    const array = []
    list.forEach((item) => {
      // 改变一下对象的结构
      if (item.fid === rootValue) {
        item.children = transListToTreeData(list, item.id)
        array.push(item)
      }
    })
    return array
  }
  // 生命周期API，绑定屏幕的点击事件，将得到的鼠标点击位置的x，y进行保存
  onMounted(async () => {
    // 获取类型数据
    let res = await getAllNoteType()

    // 改造原始数组结构
    const newData = res.data.map((item) => ({
      id: item.id,
      value: item.type,
      label: item.type,
      fid: item.fid,
      children: item.children
    }))
    noteType.value = transListToTreeData(newData, 0)
  })
  // 导出数据，进行响应式保存，保证其被解构和拓展之后仍然具备响应式特点 torefs()
  return { noteType }
}

// hook，类似于混入
